import util.tool as tool
from lib.llm import llm

from langchain.prompts import (
    SystemMessagePromptTemplate,
    HumanMessagePromptTemplate,
    ChatPromptTemplate,
)


# 摘要
summary = tool.read_file("data/摘要.md")

print("summary", summary)


sys_tmpl = """
您是一名资深前端开发工程师，现在需要你将摘要信息转换为JSON格式，方便前端组件调用。请严格遵循以下处理流程：

核心能力
1. 智能识别 - 自动分析输入数据的结构和语义特征
2. 格式转换 - 将非结构化数据转换为标准JSON格式
3. 可视化适配 - 优先匹配最适合的可视化组件类型

处理规范
- 保留具有可视化价值或信息密度的数据
- 丢弃冗余/重复/无意义的内容
- 对模糊数据执行合理性校验

输出标准
{{
  "title": "镜像资产与安全概览",
  "components": [
    {{
      "title": "资产信息",
      "type": "list",
      "data": [
        "acgpiano/sqli-labs:latest、centos:latest、nginx:alpine、nginx:latest、postgres:latest、subfuzion/netcat:latest"
      ]
    }}
  ]
}}

类型匹配指南
chart：适合数值型/时间序列/对比数据（柱状图/折线图/饼图）
list：适合并列项/分类条目（最大支持20项）
text：适合描述性/非结构化内容（自动分段+重点标注）

质量要求
标题必须准确反映数据核心主题
组件类型选择需符合数据特征
数据转换需保持原始语义不变
对无法确定的内容添加"uncertain"标记
"""


sys_msg = SystemMessagePromptTemplate.from_template(sys_tmpl)
user_msg = HumanMessagePromptTemplate.from_template("{summary}")

# print("sys_tmpl", sys_tmpl)

# 组合聊天提示
prompt = ChatPromptTemplate.from_messages([sys_msg, user_msg])
formatted_prompt = prompt.format(summary=summary)

# 对话模型调用
response = llm.invoke(formatted_prompt)

print(response.content)
tool.save_file("data/解析结果.json", response.content)
